/*----------------------------------------------------------------------
题目：函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度，其余字符串左边用字符*补齐，使其与最长的字符串等长。字符串数组中共有M个字符串，且串长小于N。
请在程序的下画线处填入正确的内容并把下画线删除，使程序得出正确的结果。
------------------------------------------------------------------------
注意：请勿改动程序中的其他内容。
----------------------------------------------------------------------*/
#include    <stdio.h>
#include    <string.h>
#define    M    5
#define    N    20

void fun(char (*ss)[N]) {
    int i, j, k = 0, n, m, len;
    // 1. 找到最长字符串的长度
    for (i = 0; i < M; i++) {
        len = strlen(ss[i]);
        if (i == 0) n = len;
        if (len > n) {
            n = len;
            k = i; //记录当前最长字符串的索引
        }
    }
    /********** Program **********/
    for (i = 0; i < M; i++) {
        len = strlen(ss[i]);
        if (n > len) {
            m = n - len; //计算需要填充的字符
            // 将原字符串向右移动m个位置
            for (j = len - 1; j >= 0; j--) {
                ss[i][j + m] = ss[i][j];
            }
            // 填充 * 在字符串的左侧
            for (j = 0;j < m;j++) {
                ss[i][j] = '*';
            }
        }
    }


    /********** END **********/
}

void main() {
    char ss[M][N] = {"shanghai", "guangzhou", "beijing", "tianjing", "cchongqing"};
    int i;

    fun(ss);
    printf("\n【The result:】\n");
    for (i = 0; i < M; i++)
        printf("%s\n", ss[i]);
}
